﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 方法重载01
{
    class Program
    {
        static void Main(string[] args)
        {
            // Console.WriteLine(Abs(-100));
            // Console.WriteLine(Abs(-1.11));
            // Console.WriteLine(Abs(-2.22f));
            // 方法的重载，即支持多个不同的方法采用同一名字
            // 实现方法的重载有条件（1、2都满足才是重载）
            // 1.方法名必须相同
            // 2.参数必须不同（个数不同、顺序不同、类型不同中的一个或多个不同）
            // 3.返回值不能作为方法是否能够重载的条件；返回值不同，参数相同不能构成重载
            // 切记：方法重载的条件只与参数有关，与返回值无关
            
            // 系统会根据传入的参数去自动匹配跟参数一样的重载方法
            Abs(1, 1.1f);
            Abs(1.1f, 1);
            string str = "str";
        }

        public static float Abs(int i, float j)
        {
            Console.WriteLine("先是int，然后float");
            return i + j;
            //if (i >= 0)
            //{
            //    return i;
            //}
            //else
            //{
            //    return -i;
            //}
        }

        public static float Abs(float i, int j)
        {
            Console.WriteLine("先是float 再是int");
            return i + j;
        }

        //public static double Abs(double i)
        //{
        //    if (i >= 0)
        //    {
        //        return i;
        //    }
        //    else
        //    {
        //        return -i;
        //    }
        //}
    }
}
